<?php

/**
 * 
 * Data grid
 * @author damian 13-07-2012
 *
 */
class MdtodoController extends Zend_Controller_Action
{

	public $cos ='testwlasnosc';
	public $komunikat= null;
	
	#
	# wlasnosci wykorzystane w paginacji
	#
	
	public $paginate =null;
	private $option = null;
	private $page = null;
	private $sortable = null;
	private $modul_nazwa = 'mdtodo';
	
	/**
	 * @var string zapytanie wykorzystane w paginacji
	 */
	private $paginacja_zapytanie= null;
	
	
	private $model;
	/**
	 * sciezka dostepu do modulu np. zend/halloword/public/DataGridDamian
	 * @var string
	 */
	private $sciezka;
	
	/*
	 * @param $db Zend_Db_Adapter_Abstract 
	 */
	private $db=null;
	
    public function init()
    {
       # /zend/halloword/public/DataGridDamian/datagrid zwraca getRequest
    	$sciezka=$this->getRequest();
    	Application_Model_Narzedziowe_CVarDumper::dodaj($sciezka,'sciezka');
    	$sciezka = new Zend_Controller_Request_Http();
    	
    	# NIE WIEM DLACZEGo nie dziala mi nic nie zwraca !!! TODO !!
    	//$akcja = $sciezka->getActionName();
    	$controller = $this->getRequest()->getControllerName();
    	$action = $this->getRequest()->getActionName();
    	 
    	Application_Model_Narzedziowe_CVarDumper::dodaj($controller, 'kontorler');
    	Application_Model_Narzedziowe_CVarDumper::dodaj($action, 'akcja');
    	
    		
    	$this->sciezka="http://".$_SERVER['SERVER_NAME'].$sciezka->getBaseUrl().'/'.$controller.'/'.$action;
    	Application_Model_Narzedziowe_CVarDumper::dodaj($sciezka->getPathInfo(), 'ścieżka');
    	
    	
        /* Initialize action controller here */
    	//$this->model = new Application_Model_DbTable_Osoba(); // standardowo nie ma tego w ksiazce ale sadze ze to dobra proktyka
 
    	###### kod przeniesiony z akcji index jest po powolanie inicjacja datagrid 
    	# czwesc jest wspolna dla wszystkich akcji
    	
    	###########TODO!!!!20-5-212
    	//$username = $this->_getParam('username'); !!!!!!!!!!!!!!!
    	 
    	 
    	# ROUTING PROSTY
    	if(isset($_GET['page']))
    	{
    		$this->page = $_GET['page'];
    	}
    	else
    	{
    		$this->page = 1;
    	}
    	
    	$page_order = null;
    	$page_order_type= null;
    	
    	# kontroler sortowanie
    	if(isset($_GET['order']) && isset($_GET['type']) )
    	{
    		$page_order = $_GET['order'];
    		$page_order_type= $_GET['type'];
    	}
    	
    	# Opcje paginacji
    	$this->options = array(
    					'url'        => $this->sciezka.'?page=*VAR*',  //mozliwe ze poczatku nie trza
    					'db_handle'  => MojeKlasy_PolaczenieBazaPDO::polaczenie(),
    					//  'results_per_page'=>20   iloĹ›c wynikow na stronie tak jak w chw pole select np 5,10,20
    	
    					'text_prev'                     => '&laquo; <<',
    					'text_next'                     => '>> &raquo;',
    					'text_first'                    => '&laquo; Pierwszy',
    					'text_last'                     => 'Ostatni &raquo;',
    					'class_ellipses'                => 'ellipses',
    					'class_dead_links'              => 'dead-link',
    					'class_live_links'              => 'tabella_ajax',
    					'class_current_page'            => 'tabella_ajax selected',
    					'class_ul'                      => 'pagination',
    					'class_live_links_order'        => 'tabella_ajax', //naglowki do sortowania
    	
           				 //sortowania
    	           		'order'      => $page_order,
            			'order_type' => $page_order_type
    								);
    	

    	# Po czym chce sortowac. musi tabica sie zaczynac od 1
    	$sortable[1]='id';
    	$sortable[2]='nazwa';
    	$sortable[3]='projekt';
    	$sortable[4]='dotyczy';
    	$sortable[5]='kategoria';
    	$sortable[6]='data<br>planowana';
    	$sortable[7]='opis';
    	$sortable[8]='opis postęp';
    	$sortable[9]='uwagi';
    	$sortable[10]='priorytet';
    	$sortable[11]='procent<br>wytkonania';
    	
    	$this->sortable=$sortable;
    	
    	/*
    	 * `projekt_todo_zdarzenia` (
    	 		`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    	 		`nazwa` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`projekt` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`dotyczy` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`kategoria` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`data planowana` DATE NOT NULL,
    	 		`opis` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`postep opis` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`uwagi` VARCHAR(50) NOT NULL DEFAULT '0',
    	 		`priorytet` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	 		`procent` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    	 		*/
    	$this->paginacja_zapytanie=
    	'SELECT
    			id ,
    			`nazwa` ,
			`projekt` ,
			`dotyczy` ,
			`kategoria` ,
			`data planowana` ,
			`opis` ,
			`postep opis` as postep,
			`uwagi` ,
			`priorytet` ,
			`procent`
	      FROM projekt_todo_zdarzenia ';
    			
    	#paginate(int $surrent_page, string $query, array $options)	

    	$this->view->modul_nazwa=$this->modul_nazwa;
    }

    /**
     * 
     * Jest tu tez test jquery w widoku.
     */
    public function indexAction()
    {
     	# przesanie komunikatu do widoku (np jezeli dodano zdarzenie to informacja o tym)
     	$this->view->komunikat=$this->getRequest()->getParam('komunikat');
     	
     	# elementy do paginacji tworze wspolne natomiast sama paginacje wywoluje w poszczegolnych akcjach dlaczego ?
     	# bo moga zmieniac sie np. optiony urle iteg i te zmiany zrobie w akcjach i zminie opcje paginacji a potem ja wywolam
     	$this->paginate = new MojeKlasy_Sortable($this->page,$this->paginacja_zapytanie,$this->options,$this->sortable );
        $this->view->paginate=$this->paginate;
        $this->view->komunikat=$this->komunikat;
        Application_Model_Narzedziowe_CVarDumper::dodaj($options,'Option');   	 
    }

 	/**
     * Edycja jednego wiersza
     */
    public function editAction()
    {
     Application_Model_Narzedziowe_CVarDumper::dodaj(' todo projekt index cont akcja edit');
     
     	
    	
    /*
     
     # ROUTING PROSTY
    	if(isset($_GET['page'])  )  
        {  
            $page = $_GET['page'];  
        }  
        else  
        {  
            $page = 1;  
        }  

        $page_order = null;  
        $page_order_type= null;  
        # kontroler sortowanie 
        if(isset($_GET['order']) && isset($_GET['type']) )  
        {  
            $page_order = $_GET['order'];  
            $page_order_type= $_GET['type'];  
        }  
        
        # Opcje paginacji
        $options = array(  
            'url'        => $this->sciezka.'?page=*VAR*',  //mozliwe ze poczatku nie trza
            'db_handle'  => MojeKlasy_PolaczenieBazaPDO::polaczenie(),
        	//  'results_per_page'=>20   iloĹ›c wynikow na stronie tak jak w chw pole select np 5,10,20   
            
            'text_prev'                     => '&laquo; <<',
            'text_next'                     => '>> &raquo;',
            'text_first'                    => '&laquo; Pierwszy',
            'text_last'                     => 'Ostatni &raquo;',
            'class_ellipses'                => 'ellipses',
            'class_dead_links'              => 'dead-link',
            'class_live_links'              => 'tabella_ajax',
            'class_current_page'            => 'tabella_ajax selected',
            'class_ul'                      => 'pagination',
            'class_live_links_order'        => 'tabella_ajax', //naglowki do sortowania  

            //sortowania
            'order'      => $page_order,                       
            'order_type' => $page_order_type 
        );
        

        
        # Po czym chce sortowac. musi tabica sie zaczynac od 1
        $sortable[1]='id';
        $sortable[2]='nazwa';
        $sortable[3]='projekt';
        $sortable[4]='dotyczy';
        $sortable[5]='kategoria';
        $sortable[6]='data<br>planowana';
        $sortable[7]='opis';
        $sortable[8]='opis postęp';
        $sortable[9]='uwagi';
        $sortable[10]='priorytet';
        $sortable[11]='procent<br>wytkonania';

        #paginate(int $surrent_page, string $query, array $options)   
        $paginate = new MojeKlasy_Sortable($page,
         'SELECT
         	 id ,
			`nazwa` ,
			`projekt` ,
			`dotyczy` ,
			`kategoria` ,
			`data planowana` ,
			`opis` ,
			`postep opis`,
			`uwagi` ,
			`priorytet` ,
			`procent` 
	      FROM projekt_todo_zdarzenia ', 
        $options,$sortable );
        
        */
        
     	$this->paginate = new MojeKlasy_Sortable($this->page,$this->paginacja_zapytanie,$this->options,$this->sortable );
        $this->view->paginate=$this->paginate;
          	
    }
    
    /**
     * 
     * Dodawanie nowego wirsza  TODO
     * @throws Exception
     */
	public function insertAction()
    {
        //echo'Bingo';
        //INSERT INTO `projekt_todo_zdarzenia` (`nazwa`) VALUES ('test3');
        
    
    if ($this->getRequest()->isPost()) 
    {
    	Application_Model_Narzedziowe_CVarDumper::dodaj($this->getRequest(),'kontroler - obiekt request');

    	/*
    	<td><input type="type" size="10" name="nazwa" value=" " /></td>
    	<td><input type="type" size="10" name="projekt" value="" /></td>
    	<td><input type="type" size="10" name="dotyczy" value="" /></td>
    	<td><input type="type" size="10" name="kategoria" value="" /></td>
    	<td><input type="type" size="10" name="data planowana" value="" /></td>
    	<td><textarea rows="2" cols="20" name="opis"> </textarea></td>
    	<td><textarea rows="2" cols="20" name="postep opis"></textarea></td>
    	<td><input type="type" size="20" name="uwagi" value=" " /></td>
    	<td><input type="type" size="5" name="priorytet" value=" " /></td>
    	<td><input type="type" size="5" name="wykonanie" value=" " /></t
    	*/
    	
    	# 6-6-2012 TODO !!!!!!!!!! Obbieram posta teraz go narazie nie waliduje tylko ustawiam i wrzucam do bazy potem zrobic walidacje
    	/*
    	'nazwa' => ' aaaa'
    			'projekt' => 'bbbb'
    					'dotyczy' => 'cccc'
    							'kategoria' => 'ł ąąąśść'
    									'data_planowana' => ''
    											'opis' => ' '
    													'postep_opis' => ''
    															'uwagi' => ' '
    																	'priorytet' => ' '
    																			'wykonanie' => ' '
    																					'nn' => 'ZATWIERZ'
    		*/																					
    	/*
    	if( $this->getRequest()->isPost())
    	{
    		$form = new Application_Form_Imie();
    		 
    		if( $form->isValid($this->getRequest()->getPost())) //z tego wynika ze przy walidacji przypisuje elementy do forma
    		{
    			
    		}
    		
    	}
    	*/	
    	
    	$post=$this->getRequest()->getPost();
    	
    	Application_Model_Narzedziowe_CVarDumper::dodaj($post,'$post1');
    	# gdy zastosuje obiekty form nie trzeba bedzie robic takich cuodow
    	$dane=array('nazwa'=>$post['nazwa'] ,
    	'projekt'=>$post['projekt'] ,
    	'dotyczy'=>$post['dotyczy'] ,
    	'kategoria'=>$post['kategoria'] ,
    	'data planowana'=>$post['data_planowana'],
    	'opis' =>$post['opis'],
    	'postep opis'=>$post['postep_opis'] ,
    	'uwagi' =>$post['uwagi'],
    	'priorytet' =>$post['priorytet'],
    	'procent' =>$post['wykonanie'],
    			);
    	
    	$obiekt_zadanie = new Application_Model_DbTable_Projekt();
    	# to zadziala pod warunkiem ze nazwy kluczy benda sie zgadzaly
    	$obiekt_zadanie->insert($dane);
    	
    	$this->komunikat='Dodano zadanie.';
    	Application_Model_Narzedziowe_CVarDumper::dodaj($this->komunikat,'komunikat  index1');
    	
    	$params = array('komunikat' => 'Dodano nowe zdarzenie.');
    	
    	# redirector tu sie nie zabardzo nadaje bo wtedy rzeczywiscie jeszcze raz preladowywuje i traca sie ustawienia obiektu
    	//$this->_helper->redirector('index', 'index',null, $params);
    	
    	$this->_forward('index','index',null,$params);
    	
       } 
       else
       {
          throw new Exception('Będny adres!', 404);
       }

    }
    
	/**
     * Dodawanie nowego wiersza wyświetlenie formularza
     * Linki DG z tej akcji prowadzą do akcji index
     * @throws Exception
     */
	public function dodajAction()
    {
    	$sciezka = new Zend_Controller_Request_Http();
    	$controller = $this->getRequest()->getControllerName();
    	# na sztywno ustawiam  ze z teja akcji z DG przechodze do akcji index
    	$action = 'index';
    	$this->sciezka="http://".$_SERVER['SERVER_NAME'].$sciezka->getBaseUrl().'/'.$controller.'/'.$action;
    	$this->options['url'] = $this->sciezka.'?page=*VAR*';
  
    	# towrze paginacje z zmienionymi opcjami (ścuiezka linkow)
    	$this->paginate = new MojeKlasy_Sortable($this->page,$this->paginacja_zapytanie,$this->options,$this->sortable );
    	$this->view->paginate=$this->paginate;
    	Application_Model_Narzedziowe_CVarDumper::dodaj('AKCJA DODAJ');
    	
    }
    
    /**
     * Akcja wykonywana podczas edycji danych. Następnie przekierowanie do index (data grid)
     * UPDATE action
     * @throws Exception
     */
	public function aktualizacjaAction()
    {
    	
    	########## !!! TO DO !!!!!!!!!!
    	
    	$id = $this->getRequest()->getParam('id');
    	
    	$Osoba = new Application_Model_DbTable_Osoba();
    	
    	$obj = $Osoba->find($id)->current(); //abym mogł wywalic wiersz musze go najpierw pobrac
    	if(!$obj)
    	{
    		throw new Zend_Date_Exception('Błedny adres',404);
    	}
    	
        //echo'Bingo';
        //INSERT INTO `projekt_todo_zdarzenia` (`nazwa`) VALUES ('test3');
        
    	# WALIDACJA informacji
    
   		if ($this->getRequest()->isPost()) 
    	{

    		$data= $form->getValues();
    		$obj->setFromArray($data);
    		$obj->save();
    		
    		#$dane = array('nazwa'=>'nill', 'dlugosc'=> 335)
    		#$db->update('rzeki', $dane, $where);
    		
			$params = array('user' =>'Bingo');
			//$this->_helper->redirector('index', 'Index', null, $params);
  	
      	} 
       else
       {
          throw new Exception('Będny adres!', 404);
       }

    }
    

    
}
    



